package it.gat.dao.impl;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import it.gat.dao.PermessoDAO;
import it.gat.dao.PermessoUtenteDAO;
import it.gat.model.Permesso;
import it.gat.model.PermessoEnum;
import it.gat.model.Utente;
import it.gat.util.dao.MySQLDAOFactory;

public class MySQLPermessoUtenteDAOImpl implements PermessoUtenteDAO {

	@Override
	public void insert(Permesso permesso,String nomeUtente) throws SQLException {
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "INSERT INTO PermessoUtente " +
					   "(nomeUtente,enumpermesso) " +
					   "VALUES " +
		               "('"+nomeUtente+"','"+permesso.getPermessoEnum().toString()+"')";
		stmt.executeUpdate(query);
	}

	@Override
	public List<Permesso> retrievePermessiByNomeUtente(String nomeUtente) throws SQLException {
		List<Permesso> permessi = new ArrayList<Permesso>();
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "SELECT * " +
		               "FROM PermessoUtente " +
				       "WHERE nomeUtente='" + nomeUtente +"'";
		ResultSet rs = stmt.executeQuery(query);
		PermessoDAO permessoDAO = new MySQLPermessoDAOImpl();
		while (rs.next()) {
			permessi.add(permessoDAO.retriveByEnum(PermessoEnum.valueOf(rs.getString("enumpermesso"))));
		}
		return permessi;
	}

	@Override
	public void delete(Permesso permesso,String nomeUtente) throws SQLException {
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "DELETE FROM PermessoUtente " +
					   "WHERE nomeutente='"+nomeUtente+"' AND "+
				       "enumpermesso='"+permesso.getPermessoEnum().toString()+"'";
		stmt.executeUpdate(query);
	}
	
	@Override
	public void deletePermessi(Utente utente) throws SQLException{
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "DELETE FROM PermessoUtente " +
					   "WHERE nomeutente='"+utente.getNomeUtente()+"'";
		stmt.executeUpdate(query);

	}

}
